package com.zqq.baselibrary.presenter

import android.content.Context
import com.trello.rxlifecycle.LifecycleProvider
import com.zqq.baselibrary.common.BaseApplication
import com.zqq.baselibrary.presenter.view.BaseView
import com.zqq.baselibrary.utils.NetWorkUtils
import javax.inject.Inject

/**
 * MVP中P层 基类
 * wc
 * @author zqq on 2018/7/26
 */
open class BasePresenter<T : BaseView>{

    // *lateinit 只用于 var，而 lazy 只用于 val
    // *lazy 应用于单例模式(if-null-then-init-else-return)，而且当且仅当变量被第一次调用的时候，委托方法才会执行。
    // *lateinit 则用于只能生命周期流程中进行获取或者初始化的变量，比如 Android 的 onCreate()
    lateinit var mView: T

    //Dagger注入，Rx生命周期管理
    @Inject
    lateinit var lifecycleProvider: LifecycleProvider<*>

    @Inject
    lateinit var context: Context

    /**
     * 检查网络是否可用
     */
    fun checkNetWork(): Boolean {
        if (NetWorkUtils.isNetWorkAvailable(context)) {
            return true
        }
        mView.onError("网络不可用")
        return false
    }


}